package com.cqfae.deploycentral.app.services;

import com.cqfae.deploycentral.app.dao.entity.ApproveDocument;
import com.cqfae.deploycentral.app.web.request.ApproveDocumentRequest;
import com.cqfae.deploycentral.app.web.request.ApproverRequest;
import com.cqfae.deploycentral.app.web.request.ReportInfoRequest;
import com.cqfae.deploycentral.app.web.response.IPage;
import com.cqfae.deploycentral.app.web.vo.ApproveFilesVo;
import com.cqfae.deploycentral.app.web.vo.ApproveInfoVo;
import com.cqfae.deploycentral.app.web.vo.SelectedVo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

public interface ApproveDocumentService {
    /**
     * 查询所有信息（带分页）
     * @return IPage<ApproveDocument>
     */
    IPage<ApproveDocument> dispalyWhitPage (ApproveDocumentRequest request,String type);
    /**
     * 查询单个信息
     * @return List<ApproveDocument>
     */
    ApproveInfoVo getInfoByApprovedId(ApproveDocumentRequest request);
    /**
     * 新增文件信息
     */
    int save(ApproveInfoVo vo);

    /**
     * 修改审批信息
     */
    int updateApprove(ApproverRequest request);

    /**
     * 重新上传评审文件（修改非评审结果相关信息）
     */
    int updateApproveDecumentInfo(ApproveInfoVo vo);

    /**
     * 上传审批文件
     * @return ApproveFilesVo
     */
    ApproveFilesVo upload(MultipartFile file,String fileSuffix) throws IOException;

    /**
     * 下载审批文件或者附件
     */
    void downloadFile(Long id,HttpServletResponse response);

    /**
     * 删除上传的附件
     */
    int fileDelete(Long id,String attachmentPath);

    /**
     * 待审批的数量值
     * @return
     */
    int readedNumber();

    /**
     * 过滤下查出来的报告内容
     * @param request
     * @return
     */
    List<SelectedVo> handReportSelected(ReportInfoRequest request);

    /**
     * 是否存在测试计划
     * @param selectedVo
     * @return
     */
    boolean checkIsExistReportPlan(SelectedVo selectedVo);


}
